// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
import QtQuick 1.1

AndroidItem {
    id: _root
    width: 720 * viewScale
    height: 1280 * viewScale
    color: "#000000"

    viewScale: 0.5
    isLock: false

    property alias launcherPath: _launcher.launcherPath             //ランチャー
    property alias lockScreenPath: _lockScreen.lockScreenPath       //ロックスクリーン
    property alias naviKeyBackPath: _naviKey.naviKeyBackPath        //ナビキー（戻る）
    property alias naviKeyExpandPath: _naviKey.naviKeyExpandPath    //ナビキー（ノティファイ開く）
    property alias naviKeyHomePath: _naviKey.naviKeyHomePath        //ナビキー（ホーム）
    property alias naviKeyMenuPath: _naviKey.naviKeyMenuPath        //ナビキー（メニュー）
    property alias naviKeyRecentPath: _naviKey.naviKeyRecentPath    //ナビキー（履歴）
    property alias notificationItemNormalPath: _notification.notificationItemNormalPath     //通知アイテム
    property alias notificationItemPressedPath: _notification.notificationItemPressedPath   //通知アイテム
    property alias notificationTrackingBgPath: _notification.notificationTrackingBgPath     //通知背景
    property alias screenshotPath: _screenShot.screenshotPath       //スクリーンショット
    property alias wallpaperPath: _home.wallpaperPath               //壁紙
    property alias recentFramePath: _recent.recentFramePath         //履歴


    //ロック状態を制御する
    function screenLock(islock){
        if(islock === true){
            _root.isLock = true;
            _lockScreen.visible = true;
        }else{
            _root.isLock = false;
            _lockScreen.visible = false;
        }
    }
    //ランチャーの状態を制御する
    function launcherState(isopen){
        if(isopen === true){
            _launcher.isViewing = true;
        }else{
            _launcher.isViewing = false;
        }
    }
    //通知の状態を制御する
    function notificationState(isopen){
        if(isopen === true){
            _notification.moveTo(0);
        }else{
            _notification.moveTo(-1 * _notification.height);
        }
    }
    function getNotificationState(){
        if(_notification.y < 0){
            return false;
        }else{
            return true;
        }
    }

    //履歴の状態を制御する
    function recentState(isopen){
        if(isopen === true){
            _recent.visible = true;
        }else{
            _recent.visible = false;
        }
    }
    function getRecentState(){
        return _recent.visible;
    }

    //スクリーンショット
    function takeScreenShot(){
        _screenShot.takeScreenShot();
    }

    //ホーム全体
    Home{
        id: _home
        y: _notificationBar.height * -1
        anchors.horizontalCenter: parent.horizontalCenter
        viewScale: _root.viewScale
        isLock: _root.isLock
    }


    //そのた
    Item{
        anchors.top: _notificationBar.bottom
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.bottom: _naviKey.top

        //ホームのボタンとか
        HomeKey{
            anchors.fill: parent
            viewScale: _root.viewScale
            isLock: _root.isLock

            onClicked: {
                //ランチャーを開く
                launcherState(true);
            }
        }

        //ランチャー
        Launcher{
            id: _launcher
            anchors.fill: parent
            visible: false
            viewScale: _root.viewScale
            isLock: _root.isLock
        }

        //通知領域
        Notification{
            id: _notification
            x: 0
            y: -height
            viewScale: _root.viewScale
            isLock: _root.isLock
        }

        //ロック画面
        LockScreen{
            id: _lockScreen
            anchors.fill: parent
            visible: false
            viewScale: _root.viewScale
            isLock: _root.isLock
            onClicked: {
            }
            onUnlocked: {
                screenLock(false);
            }
        }

    }

    //ナビキー
    Navikey{
        id: _naviKey
        anchors.bottom: parent.bottom
        anchors.left: parent.left
        anchors.right: parent.right
        viewScale: _root.viewScale
        isLock: _root.isLock
        onClicked: {
            switch(key){
            case 1:
                // back
                launcherState(false);
                notificationState(false);
                recentState(false);
                break;
            case 2:
                // menu
                break;
            case 3:
                // home
                launcherState(false);
                notificationState(false);
                recentState(false);
                break;
            case 4:
                // expand
                if(getNotificationState() === true){
                    recentState(false);
                }
                notificationState(!getNotificationState());
                break;
            case 5:
                // recent
                recentState(!getRecentState());
                break;
            default:
                break;
            }
            var i=0;
            i = i;
        }
    }

    //通知
    NotificationBar{
        id: _notificationBar
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.right: parent.right
        viewScale: _root.viewScale
        isLock: _root.isLock

        property real default_y: 0
        property real prev_y: 0
        property bool isOpe: false
        Component.onCompleted: {
            default_y = _notification.y
        }

        onPressed: {
            prev_y = mouse.y;
            if(_notification.y < 0.0){
                _notification.y += _notificationBar.height;
                isOpe = true;
            }
        }
        onMouseMove: {
            if(isOpe === true){
                _notification.y += mouse.y - prev_y;
                prev_y = mouse.y;
            }
        }
        onReleased: {
            if(isOpe === true){
                if(mouse.y < (_root.height / 2)){
                    // 戻す
    //                _notification.y = default_y
                    notificationState(false);
                }else{
                    // 下ろす
                    notificationState(true);
                }
            }
            isOpe = false;
        }
    }

    //履歴
    Recent{
        id: _recent
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.right: parent.right
        viewScale: _root.viewScale
        isLock: _root.isLock
    }

    //スクリーンショット
    ScreenShot{
        id: _screenShot
        anchors.fill: parent
        viewScale: _root.viewScale
        isLock: _root.isLock

        onFinished: {

        }
    }
}
